/*
 * This class contains constants for general purpose
 * if you want to use the constants, just use method like: Consts....
 */
package merlion.common.util;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;

/**
 *
 * @author Zhang Ying, Zhiqi, Yuwei
 */
public final class Consts {
    
    //Global Variables
    public static final String GLOBAL_CASH_ON_HAND = "Cash On Hand";
    public static final String GLOBAL_SAFETY_CASH = "Safety Cash";
    public static final String GLOBAL_TAX_RATE = "Tax Rate";
    public static final String GLOBAL_SPECIAL_DISCOUNT = "Special Discount";
    

    
    // constants for Admin purpose
    // for common infrastructure
    // for log in part
    public static final String LOGIN_USERNAME_NOT_EXIST = "Username is not found.";
    public static final String LOGIN_USERNAME_PASSWORD_MATCH = "Login successfully.";
    public static final String LOGIN_USERNAME_PASSWORD_NOTMATCH = "Password is wrong.";
    public static final String LOGIN_ACCOUNT_DISABLED = "Account is disabled";
    public static final String LOGIN_CAPTCHA_WRONG = "Captcha inputted is wrong.";
    public static final String LOGIN_EMAIL_NOT_EXIST = "Email is not found.";
    public static final String LOGIN_QNS_ANS_NOT_MATCH = "Secure question and answer don't match.";
    // for account creation
    public static final String CREATE_ACCOUNT_EMAIL_EXIST = "Email exists.";
    // for account acctivation
    public static final String ACCOUNT_ACTIVATED = "Activated";
    public static final String ACCOUNT_RESET = "Reset";
    public static final String ACCOUNT_DISABLED = "Disabled";
    public static final String ACCOUNT_REACTIVATION = "Reactivation";
    // for other email purpose
    public static final String EMAIL_SQ = "EmailSQ";
    public static final String EMAIL_RMPO = "EmailRMPO";
    public static final String EMAIL_INV = "EmailINV";
    public static final String EMAIL_SO = "EmailSO";
    public static final String EMAIL_REC = "EmailREC";
    public static final String ACCOUNT_ACTIVATION = "Activation";
    public static final String ACCOUNT_LOGIN_FAIL = "LoginFail";
    public static final String ACCOUNT_ACTIVATION_CALLBACK_URL = "https://localhost:8181/merlion-war/LoginAdmin/accountActivated.xhtml";
    public static final String ACCOUNT_REACTIVATION_CALLBACK_URL = "https://localhost:8181/merlion-war/LoginAdmin/accountReactivated.xhtml";
    public static final String EMAIL_INVOICE_DUE = "Email invoice due";
    public static final String EMAIL_CUSTOMER_DEFAULT = "Email customer default";
    // for profile
    public static final int MAX_FUNCTIONS_CATEGORY = 15;
    // for messaging
    public static final Boolean MSG_HAVE_READ = true;
    public static final Boolean MSG_HAVE_NOT_READ = false;
    public static final String MSG_TYPE_RECEIVED = "Received";
    public static final String MSG_TYPE_SENT = "Sent";
    // TODO: system job types (need to add more)
    // for SALES_DEP
    public static final String JOB_TYPE_CC = "Credit Check";
    public static final String JOB_TYPE_CC_TITLE = "Contact Customer: credit check failed";
    public static final String JOB_TYPE_CC_CONTENT = "Contact Customer, credit check failed for Sales Order of id: ";
    
    public static final String JOB_TYPE_ATP_SO = "ATP Check for Sales Order";
    public static final String JOB_TYPE_ATP_SO_TITLE = "Check ATP check for Sales Order result";
    public static final String JOB_TYPE_ATP_SO_CONTENT = "Check ATP check for Sales Order result for Sales Order of id:";
    
    public static final String JOB_TYPE_ATP_SO_PENDING = "ATP Check(Pending) for Sales Order";
    public static final String JOB_TYPE_ATP_SO_PENDING_TITLE = "Check ATP check(Pending) for Sales Order result";
    public static final String JOB_TYPE_ATP_SO_PENDING_CONTENT = "Check ATP check(Pending) for Sales Order result for Sales Order of id:";
    
    public static final String JOB_TYPE_ATP_DO_FAIL = "ATP result (failure) for Sales Order";
    public static final String JOB_TYPE_ATP_DO_FAIL_TITLE = "Check ATP result (failure) for Delivery Order result";
    public static final String JOB_TYPE_ATP_DO_FAIL_CONTENT = "Check ATP check for Sales Order result for delivery order in Sales Order:";
    
    public static final String JOB_TYPE_ATP_RFQ_FAIL = "ATP result (failure) for Sales Order";
    public static final String JOB_TYPE_ATP_RFQ_FAIL_TITLE = "Check ATP result (failure) for Delivery Order result";
    public static final String JOB_TYPE_ATP_RFQ_FAIL_CONTENT = "Check ATP check for Sales Quotation result for delivery order in Sales Quotation:";

    public static final String JOB_TYPE_ATP_SQ = "ATP Check for Sales Quotation";
    public static final String JOB_TYPE_ATP_SQ_TITLE = "Check ATP check for Sales Quotation result";
    public static final String JOB_TYPE_ATP_SQ_CONTENT = "Check ATP check for Sales Quotation result for Sales Quotation of id:";
    
    public static final String JOB_TYPE_ATP_SQ_URGENT = "ATP Check for Sales Quotation(Urgent)";
    public static final String JOB_TYPE_ATP_SQ_URGENT_TITLE = "Check ATP check for Sales Quotation result (Urgent)";
    public static final String JOB_TYPE_ATP_SQ_URGENT_CONTENT = "Check ATP check for Sales Quotation's delivery order result for Sales Quotation of id(Urgent):";
    
    public static final String JOB_TYPE_INVOICE_CIA = "Create Invoice for Cash In Advance Payment";
    public static final String JOB_TYPE_INVOICE_CIA_TITLE = "Create invoice immediately for Cash In Advance Payment";
    public static final String JOB_TYPE_INVOICE_CIA_CONTENT = "Create invoice immediately for Cash In Advance Payment of Sales Order ID: ";
    
    public static final String JOB_TYPE_REFUND_CIA = "Refund Money for the Cash Payment";
    public static final String JOB_TYPE_REFUND_CIA_TITLE = "Refund Money immediately for Cash Payment";
    public static final String JOB_TYPE_REFUND_CIA_CONTENT = "Refund Money immediately for Cash Payment of Sales Order ID: ";
   
    public static final String JOB_TYPE_INVOICE_CC = "Create Invoice for Credit Check";
    public static final String JOB_TYPE_INVOICE_CC_TITLE = "Create invoice immediately for shipped delivery order with credit purchase";
    public static final String JOB_TYPE_INVOICE_CC_CONTENT = "Create invoice immediately for shipped delivery order with credit purchase of Sales Order ID: ";
    
    public static final String JOB_TYPE_SIMULATE_PENDING_SQ = "Check pending atp for sales quotation";
    public static final String JOB_TYPE_SIMULATE_PENDING_SQ_TITLE = "Check pending atp for sales quotation";
    public static final String JOB_TYPE_SIMULATE_PENDING_SQ_CONTENT = "Check pending atp for sales quotation with ID: ";
    
    public static final String JOB_TYPE_SIMULATE_PENDING_SO = "Check pending atp for sales order";
    public static final String JOB_TYPE_SIMULATE_PENDING_SO_TITLE = "Check pending atp for sales order";
    public static final String JOB_TYPE_SIMULATE_PENDING_SO_CONTENT = "Check pending atp for sales order with ID: ";
    
    // TODO: job status
    public static final String JOB_STATUS_PENDING = "Pending";
    public static final String JOB_STATUS_FINISHED = "Completed";
    
    //for SOP
    public static final String ORDER_INITIATED = "Initiated";
    public static final String ORDER_ATPFAILED = "ATP Failed";
    public static final String ORDER_ATPCHECKING = "ATP Checking";
    public static final String ORDER_ATPPENDING = "ATP Pending";
    public static final String ORDER_BLOCKED = "Blocked";
    public static final String ORDER_CANCELLED = "Cancelled";
    public static final String ORDER_WAITING_CONFIRMATION = "Waiting Client Confirmation on ATP Lead Time";
    public static final String ORDER_FULFILLING = "Order Fulfilling"; //fulfilling
    public static final String ORDER_SHIPPED = "Shipped";
    public static final String ORDER_WAITFORCIA = "Waiting For Cash In Advance Payment";
    public static final String ORDER_CCFAILED = "Credit Check Failed";
    
    //for logistics orders
    public static final String LOGISTIC_DELIVERYORDER_QUEUING = "Queuing";
    public static final String LOGISTIC_DELIVERYORDER_PICKING = "Picking";
    public static final String LOGISTIC_DELIVERYORDER_PACKING = "Packing";
    public static final String LOGISTIC_DELIVERYORDER_SHIPPING = "Shipping";
    public static final String LOGISTIC_DELIVERYORDER_SHIPPED = "Shipped";
    // for sop sales figure time information
    public static final int BASE_YEAR = 2010;
    public static final String JAN = "Jan";
    public static final String FEB = "Feb";
    public static final String MAR = "March";
    public static final String APR = "April";
    public static final String MAY = "May";
    public static final String JUN = "June";
    public static final String JUL = "July";
    public static final String AUG = "Aug";
    public static final String SEP = "Sep";
    public static final String OCT = "Oct";
    public static final String NOV = "Nov";
    public static final String DEC = "Dec";
    
    public static final String MON = "Mon";
    public static final String TUE = "Tue";
    public static final String WED = "Wed";
    public static final String THU = "Thu";
    public static final String FRI = "Fri";
    public static final String SAT = "Sat";
    public static final String SUN = "Sun";
    
    // constants for role name defining
    // for common infrastructure
    public static final String ADMIN_DEP = "SuperAdmin";
    public static final String TECH_DEP = "TechDep";
    public static final String TECH_STAFF_ROLE = "TechStaff";
    public static final String STAFF_ROLE = "Staff";
    // for finance dep.
    public static final String FIN_DEP = "FinDep";
    public static final String FIN_STAFF_ROLE = "FinStaff";
    public static final String FIN_AP_STAFF_ROLE = "AccountPayableStaff";
    public static final String FIN_AR_STAFF_ROLE = "AccountReceivableStaff";
    public static final String CC_DIRECTOR_ROLE = "CCDirector";
    public static final String FIN_VP_ROLE = "FinVP";
    //for Sales Department
    public static final String SALES_DEP ="SalesDep";
    public static final String SALES_EXECUTIVE_ROLE = "SalesExecutive";
    public static final String SALES_MANAGER_ROLE= "SalesManager";
    public static final String SALES_VP_ROLE ="SalesVP";
    //for Supply Chain Department
    public static final String SUPPLY_CHAIN_DEP = "SupplyChainDep";
    public static final String WAREHOUSE_WORKER_ROLE = "WarehouseWorker";
    public static final String WAREHOUSE_MANAGER_ROLE = "WarehouseManager";
    public static final String SUPPLY_CHAIN_VP_ROLE = "SupplyChainVP";
    
    // for all access pages
    public static final String VIEW_MY_ANNS = "/CommonUtility/viewMyAnns";
    public static final String VIEW_MSGS_SENT = "/CommonUtility/viewMsgsSent";
    public static final String VIEW_MSGS_RCVED = "/CommonUtility/viewMsgsRcved";
    public static final String VIEW_MSGS_SENT_ONE = "/CommonUtility/viewMsgsSentOne";
    public static final String VIEW_MSGS_RCVED_ONE = "/CommonUtility/viewMsgsRcvedOne";
    public static final String SEND_NEW_MSG = "/CommonUtility/sendNewMsg";
    public static final String REPLY_RCVED_MSG = "/CommonUtility/replyRcvedMsg";
    public static final String VIEW_MY_JOB_LIST = "/CommonUtility/viewMyJobList";
    public static final String VIEW_MY_JOB_LIST_ONE = "/CommonUtility/viewMyJobListOne";
    
    // constants for access rights defining 
    //for common infra
    public static final String CREATE_SYSTEM_USER_ACCOUNT = "Create Users";
    public static final String CREATE_SYSTEM_USER_ACCOUNT_PATH = "/UserRoleManagement/createUserAccount";
    public static final String CREATE_SYSTEM_USER_ACCOUNT_CATEGORY = "System User";
    
    public static final String MANAGE_SYSTEM_USER_ACCOUNT= "Manage Users";
    public static final String MANAGE_SYSTEM_USER_ACCOUNT_PATH= "/UserRoleManagement/manageAccounts";
    public static final String MANAGE_SYSTEM_USER_ACCOUNT_CATEGORY= "System User";
    
    public static final String CREATE_ROLE= "Create Role";
    public static final String CREATE_ROLE_PATH = "/UserRoleManagement/createNewRole";
    public static final String CREATE_ROLE_CATEGORY = "Role";
    
    public static final String DELETE_ROLE= "Delete Role";
    public static final String DELETE_ROLE_PATH= "/UserRoleManagement/deleteRole";
    public static final String DELETE_ROLE_CATEGORY= "Role";
    
    public static final String EDIT_ROLE= "Edit Role";
    public static final String EDIT_ROLE_PATH= "/UserRoleManagement/editRole";
    public static final String EDIT_ROLE_CATEGORY= "Role";
    
    public static final String VIEW_ROLE= "View All Roles";
    public static final String VIEW_ROLE_PATH= "/UserRoleManagement/viewAllRoles";
    public static final String VIEW_ROLE_CATEGORY= "Role";
   
    public static final String ANNOUCEMENT_CREATE = "Post Announcement";
    public static final String ANNOUCEMENT_CREATE_PATH = "/RestrictedUtility/postNewAnn";
    public static final String ANNOUCEMENT_CREATE_CATEGORY = "Announcement";
    
    public static final String ANNOUCEMENT_MANAGE = "Manage Announcement";
    public static final String ANNOUCEMENT_MANAGE_PATH = "/RestrictedUtility/manageAnns";
    public static final String ANNOUCEMENT_MANAGE_CATEGORY = "Announcement";
    
    public static final String LOGGING_LOGS_VIEW = "View Logs for log-in";
    public static final String LOGGING_LOGS_VIEW_PATH = "/RestrictedUtility/viewLoginLogs";
    public static final String LOGGING_LOGS_VIEW_CATEGORY = "Log Tracking";
    
    public static final String VIEW_JOB_LIST_ONE_DEP = "View Department Jobs";
    public static final String VIEW_JOB_LIST_ONE_DEP_PATH = "/RestrictedUtility/viewJobListOneDep";
    public static final String VIEW_JOB_LIST_ONE_DEP_CATEGORY = "Job List";
    
    // contants for auditlog actions
    public static final String USER_LOGIN= "SystemUserLogin";
    // TODO: payment auditlog
    
    public static final String EDIT_USER_INFO= "EditUserInfo";
    public static final String EDIT_USER_INFO_PATH="";
    public static final String VIEW_USER_INFO= "ViewUserInfo";
    public static final String VIEW_USER_INFO_PATH= "";
    public static final String SEND_MESSAGE= "SendMessage";
    public static final String PASSWORD_REMIND= "PasswordRemind";
    public static final String LOGIN_PASSWORD_RESET= "LoginPasswordReset";
    public static final String EMAIL_PASSWORD_RESET= "EmailPasswordReset";
    public static final String TECH_PASSWORD_RESET= "TechPasswordReset";
    public static final String TECH_HELP_REQUEST= "TechHelpRequest";
    
    //for financial access rights
    public static final String MANAGE_CREDIT_GROUP= "Manage Credit Group";
    public static final String MANAGE_CREDIT_GROUP_PATH="/CC/manageCreditGroup";
    public static final String MANAGE_CREDIT_GROUP_CATEGORY="Credit Control";
    public static final String VIEW_CREDIT_GROUP= "View Credit Group";
    public static final String VIEW_CREDIT_GROUP_PATH="/CC/viewCreditGroup";
    public static final String VIEW_CREDIT_GROUP_CATEGORY="Credit Control";
    public static final String CREATE_CREDIT_GROUP= "Create Credit Group";
    public static final String CREATE_CREDIT_GROUP_PATH="/CC/createCreditGroup";
    public static final String CREATE_CREDIT_GROUP_CATEGORY="Credit Control";
    public static final String CREATE_CREDIT_ACCOUNT= "Create Credit Account";
    public static final String CREATE_CREDIT_ACCOUNT_PATH = "/CC/createCreditAccount";
    public static final String CREATE_CREDIT_ACCOUNT_CATEGORY = "Credit Control";
    public static final String VIEW_CREDIT_ACCOUNT= "View Credit Account";
    public static final String VIEW_CREDIT_ACCOUNT_PATH = "/CC/viewCreditAccount";
    public static final String VIEW_CREDIT_ACCOUNT_CATEGORY = "Credit Control";
    public static final String CREATE_SALES_INVOICE= "Create Sales Invoice";
    public static final String CREATE_SALES_INVOICE_PATH="/SalesBP/createInvoice";
    public static final String CREATE_SALES_INVOICE_CATEGORY="Sales Billing and Payment";
    public static final String VIEW_SALES_INVOICE= "View Sales Invoice";
    public static final String VIEW_SALES_INVOICE_PATH="/SalesBP/viewInvoice";
    public static final String VIEW_SALES_INVOICE_CATEGORY="Sales Billing and Payment";
    public static final String CREATE_CUSTOMER_PAYMENT_RECORD= "Create Customer Payment Record";
    public static final String CREATE_CUSTOMER_PAYMENT_RECORD_PATH="/SalesBP/createCustomerPaymentRecord";
    public static final String CREATE_CUSTOMER_PAYMENT_RECORD_CATEGORY="Sales Billing and Payment";
    public static final String VIEW_CUSTOMER_PAYMENT_RECORD= "View Customer Payment Record";
    public static final String VIEW_CUSTOMER_PAYMENT_RECORD_PATH="/SalesBP/viewCustomerPaymentRecord";
    public static final String VIEW_CUSTOMER_PAYMENT_RECORD_CATEGORY="Sales Billing and Payment";
    public static final String VIEW_RECEIPT= "View Receipt";
    public static final String VIEW_RECEIPT_PATH="/SalesBP/viewReceipt";
    public static final String VIEW_RECEIPT_CATEGORY="Sales Billing and Payment";
    public static final String STORE_SUPPLIER_INVOICE= "Store Supplier Invoice";
    public static final String STORE_SUPPLIER_INVOICE_PATH="/ProcurementBP/storeInvoice";
    public static final String STORE_SUPPLIER_INVOICE_CATEGORY="Procurement Billing and Payment";
    public static final String VIEW_SUPPLIER_INVOICE= "View Supplier Invoice";
    public static final String VIEW_SUPPLIER_INVOICE_PATH="/ProcurementBP/viewInvoice";
    public static final String VIEW_SUPPLIER_INVOICE_CATEGORY="Procurement Billing and Payment";
    public static final String CREATE_SUPPLIER_PAYMENT_RECORD= "Create Supplier Payment Record";
    public static final String CREATE_SUPPLIER_PAYMENT_RECORD_PATH="/ProcurementBP/createSupplierPaymentRecord";
    public static final String CREATE_SUPPLIER_PAYMENT_RECORD_CATEGORY="Procurement Billing and Payment";
    public static final String VIEW_SUPPLIER_PAYMENT_RECORD= "View Supplier Payment Record";
    public static final String VIEW_SUPPLIER_PAYMENT_RECORD_PATH="/ProcurementBP/viewSupplierPaymentRecord";
    public static final String VIEW_SUPPLIER_PAYMENT_RECORD_CATEGORY="Procurement Billing and Payment";
    public static final String STORE_SUPPLIER_RECEIPT= "Store Supplier Receipt";
    public static final String STORE_SUPPLIER_RECEIPT_PATH="/ProcurementBP/storeReceipt";
    public static final String STORE_SUPPLIER_RECEIPT_CATEGORY="Procurement Billing and Payment";
    public static final String VIEW_SUPPLIER_RECEIPT= "View Supplier Receipt";
    public static final String VIEW_SUPPLIER_RECEIPT_PATH="/ProcurementBP/viewReceipt";
    public static final String VIEW_SUPPLIER_RECEIPT_CATEGORY="Procurement Billing and Payment";
    public static final String VIEW_FINANCIAL_DASHBOARD= "View Financial Dashboard";
    public static final String VIEW_FINANCIAL_DASHBOARD_PATH="/FinancialDashboard/viewFinancialDashboard";
    public static final String VIEW_FINANCIAL_DASHBOARD_CATEGORY="Financial Dashboard";
    public static final String CREATE_AR= "CreateAR";
    public static final String EDIT_AR= "EditAR";
    public static final String VIEW_AR= "ViewAR";
    public static final String CREATE_AP= "CreateAP";
    public static final String EDIT_AP= "EditAP";
    public static final String VIEW_AP= "ViewAP";
    
    //for Sales access rights
    public static final String CREATE_SALESLEAD = "Create Sales Lead";
    public static final String CREATE_SALESLEAD_PATH = "/SLC/createSalesLead";
    public static final String CREATE_SALESLEAD_CATEGORY = "Sales Lead and Customer";
    public static final String VIEW_ALL_SALESLEAD= "View All Sales Lead";
    public static final String VIEW_ALL_SALESLEAD_PATH = "/SLC/viewAllSalesLead";
    public static final String VIEW_ALL_SALESLEAD_CATEGORY = "Sales Lead and Customer";
    public static final String CREATE_CUSTOMER = "Create Customer";
    public static final String CREATE_CUSTOMER_PATH ="/SLC/createCustomer";
    public static final String CREATE_CUSTOMER_CATEGORY = "Sales Lead and Customer";
    public static final String VIEW_ALL_CUSTOMER= "View All Customer";
    public static final String VIEW_ALL_CUSTOMER_PATH = "/SLC/viewAllCustomer";
    public static final String VIEW_ALL_CUSTOMER_CATEGORY = "Sales Lead and Customer";
    
    public static final String MANAGE_ORDER_DISCOUNT_GROUP= "Manage Order Discount Group"; 
    public static final String MANAGE_ORDER_DISCOUNT_GROUP_PATH= "/SLC/manageOrderDiscountGroup";
    public static final String MANAGE_ORDER_DISCOUNT_GROUP_CATEGORY= "Sales Lead and Customer";
    public static final String VIEW_ORDER_DISCOUNT_GROUP= "View All Order Discount Groups"; 
    public static final String VIEW_ORDER_DISCOUNT_GROUP_PATH= "/SLC/viewAllOrderDiscountGroup";
    public static final String VIEW_ORDER_DISCOUNT_GROUP_CATEGORY= "Sales Lead and Customer";
    public static final String MANAGE_MEMBER_DISCOUNT_GROUP= "Manage Member Discount Group"; 
    public static final String MANAGE_MEMBER_DISCOUNT_GROUP_PATH= "/SLC/manageMemberDiscountGroup";
    public static final String MANAGE_MEMBER_DISCOUNT_GROUP_CATEGORY= "Sales Lead and Customer";
    public static final String VIEW_MEMBER_DISCOUNT_GROUP= "View All Member Discount Groups"; 
    public static final String VIEW_MEMBER_DISCOUNT_GROUP_PATH= "/SLC/viewAllMemberDiscountGroup";
    public static final String VIEW_MEMBER_DISCOUNT_GROUP_CATEGORY= "Sales Lead and Customer";
    public static final String MANAGE_SALES_PRICE= "Sales Price Analysis and Management"; 
    public static final String MANAGE_SALES_PRICE_PATH= "/SLC/manageSalesPrice";
    public static final String MANAGE_SALES_PRICE_CATEGORY= "Sales Dashboard";
    
    public static final String VIEW_ANALYTICS_CLIENT = "View Client Analytics"; 
    public static final String VIEW_ANALYTICS_CLIENT_PATH= "/SLC/analyticsClient";
    public static final String VIEW_ANALYTICS_CLIENT_CATEGORY= "Sales Dashboard";
    
    //SOP
    public static final String CREATE_PURCHASE_ORDER= "Create Purchase Order";
    public static final String CREATE_PURCHASE_ORDER_PATH = "/SOP/createPurchaseOrder";
    public static final String CREATE_PURCHASE_ORDER_CATEGORY = "Order Management";
    public static final String CREATE_SALES_QUOTATION= "Create Sales Quotation";
    public static final String CREATE_SALES_QUOTATION_PATH = "/SOP/createSalesQuotation";
    public static final String CREATE_SALES_QUOTATION_CATEGORY = "Order Management";
    public static final String VIEW_SALES_QUOTATION= "View Sales Quotation";
    public static final String VIEW_SALES_QUOTATION_PATH = "/SOP/viewSalesQuotation";
    public static final String VIEW_SALES_QUOTATION_CATEGORY = "Order Management";
    public static final String CREATE_SALES_INQUIRY= "Create Sales Inquiry";
    public static final String CREATE_SALES_INQUIRY_PATH= "/SOP/createSalesInquiry";
    public static final String CREATE_SALES_INQUIRY_CATEGORY= "Order Management";
    public static final String VIEW_SALES_INQUIRY= "View Sales Inquiry";
    public static final String VIEW_SALES_INQUIRY_PATH= "/SOP/viewSalesInquiry";
    public static final String VIEW_SALES_INQUIRY_CATEGORY= "Order Management";
    public static final String VIEW_PURCHASE_ORDER= "View Purchase Order";
    public static final String VIEW_PURCHASE_ORDER_PATH = "/SOP/viewPurchaseOrder";
    public static final String VIEW_PURCHASE_ORDER_CATEGORY = "Order Management";
    public static final String CREATE_SALES_ORDER= "Create Sales Order";
    public static final String CREATE_SALES_ORDER_PATH = "/SOP/createSalesOrder";
    public static final String CREATE_SALES_ORDER_CATEGORY = "Order Management";
    public static final String VIEW_SALES_ORDER= "View Sales Order";
    public static final String VIEW_SALES_ORDER_PATH = "/SOP/viewSalesOrder";
    public static final String VIEW_SALES_ORDER_CATEGORY = "Order Management";
    public static final String VIEW_SALES_FIGURE= "View Sales Revenue";
    public static final String VIEW_SALES_FIGURE_PATH = "/SOP/getAllSalesFigures";
    public static final String VIEW_SALES_FIGURE_CATEGORY = "Sales Dashboard";
    
    // document flow
    public static final String VIEW_DOCUMENT_FLOW= "View Document Flow";
    public static final String VIEW_DOCUMENT_FLOW_PATH = "/SOP/getDocumentFlow";
    public static final String VIEW_DOCUMENT_FLOW_CATEGORY = "Order Management";
    
    
    // for general path defined
    public static final String PROFILE_PATH = "/Workspace/home";
    
    // for mrp sales forecast

    //public static final String FORECAST_INDUSTRY_CSV_PATH = "C:\\Users\\Zhu Xin\\Desktop\\industrydata.csv";
    //public static final String FORECAST_INDUSTRY_CSV_PATH = "C:\\Users\\Yuwei\\Desktop\\industrydata.csv";
    //public static final String FORECAST_INDUSTRY_CSV_PATH = "C:\\Users\\Kenn\\Desktop\\industrydata.csv";
    // TODO: need to change to CD's address
    public static final String FORECAST_INDUSTRY_CSV_PATH = "C:\\Users\\Zhang Ying\\Desktop\\industrydata.csv";
    public static final SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
    public static final SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");
    public static final SimpleDateFormat sdfDay = new SimpleDateFormat("dd");
    public static final SimpleDateFormat sdfDmy = new SimpleDateFormat("dd/MM/yyyy");
    public static final SimpleDateFormat sdfTime = new SimpleDateFormat("hh:mm:ss dd/MM/yyyy");
    public static final Integer NORMAL_SHIFT_PER_DAY = 16;
    public static final Integer OVERTIME_SHIFT_PER_DAY = 24;
    public static final Integer OVERTIME_EXTRA_SHIFT_PER_DAY = 8;
    public static final Integer CASES_PER_HOUR_CLASSIC = 50;
    public static final Integer CASES_PER_HOUR_PREMIUM = 45;
    public static final Double EACH_SHIFT_COST_TIME = 0.5;
    
    // mrp atp
    public static final String PENDING_SO = "PendingSo";
    public static final String PENDING_RFQ = "PendingRfq";
    public static final String ATP_SO_FAIL = "ATP Failed";
    
    public static final List<String> allRawMaterialNames = Arrays.asList(
            "Oats", 
            "Wheat Germ",
            "Cinnamon",
            "Nutmeg",
            "Cloves",
            "Honey",
            "Canola Oil",
            "Vitamin/Mineral Powder",
            "Carob Chips",
            "Protein Powder",
            "Cocoa Powder",
            "Hazenuts",
            "Cashew Nuts",
            "Walnuts",
            "Almonds",
            "Macadamias",
            "Redcurrants",
            "Rasins",
            "Dates",
            "Apricots",
            "Kiwis",
            "Apples",
            "Peaches");
    
    public static final List<Long> rawMaterialLeadTimeList = Arrays.asList(
            2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 1L, 3L, 3L, 1L, 1L);
    
    public static final List<Long> rawMaterialLotSize = Arrays.asList(
            100L, 20L, 20L, 20L, 20L, 20L, 20L, 10L, 20L, 10L, 20L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L);
    
    public static final double[][] rawMaterialBoms = {
        {100, 100, 120, 120},
        {20, 20, 25, 25},
        {2, 2, 4, 4},
        {1, 1, 1.5, 1.5},
        {0.5, 0.5, 1, 1},
        {5, 5, 7, 7},
        {3, 3, 5, 5},
        {2, 2, 5, 5},
        {20, 10, 25, 15},
        {0, 0, 25, 25},
        {0, 0, 30, 5},
        {15, 5, 20, 7},
        {15, 0, 20, 0},
        {15, 0, 20, 0},
        {10, 0, 15, 0},
        {10, 0, 15, 0},
        {0, 5, 0, 30},
        {0, 20, 0, 15},
        {0, 15, 0, 15},
        {0, 10, 0, 10},
        {0, 10, 0, 15},
        {0, 10, 0, 10},
        {0, 10, 0, 15},
    };
    
    public static final String[] allAlphas = {"A", "B", "C", "D","E","F",
        "G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    
    public static final String FORECAST_METHOD_INDUSTRY = "Industry";
    public static final String FORECAST_METHOD_HISTORICAL = "Historical";
    public static final String FORECAST_METHOD_STATIC = "Static";
    public static final String FORECAST_METHOD_MOVAVG = "Moving Average";
    public static final String FORECAST_METHOD_EXP = "Exponential";
    
    public static final String MRP_DEP = "MRP Dep";
    public static final String MRP_VP_ROLE = "MRP VP";
    public static final String MRP_MANAGER_ROLE = "MRP Manager";
    
    public static final String CREATE_SALES_FORECAST = "Create Sales Forecast";
    public static final String CREATE_SALES_FORECAST_PATH = "/SalesForecast/createSalesForecast";
    public static final String CREATE_SALES_FORECAST_CATEGORY = "Sales Forecast";
    

    public static final String MANAGE_BASE_PRICE = "Manage Base Price";
    public static final String MANAGE_BASE_PRICE_PATH = "/ProductManagement/manageBasePrice";
    public static final String MANAGE_BASE_PRICE_CATEGORY = "Product Management";

    public static final String VIEW_SALES_FORECAST = "View Sales Forecast";
    public static final String VIEW_SALES_FORECAST_PATH = "/SalesForecast/viewSalesForecast";
    public static final String VIEW_SALES_FORECAST_CATEGORY = "Sales Forecast";

    

    public static final String MANAGE_FINISHED_GOODS = "Manage Finished Goods";
    public static final String MANAGE_FINISHED_GOODS_PATH = "/ProductManagement/manageFinishedGoods";
    public static final String MANAGE_FINISHED_GOODS_CATEGORY = "Product Management";

    public static final String EDIT_SALES_FORECAST = "Edit Sales Forecast";
    public static final String EDIT_SALES_FORECAST_PATH = "/SalesForecast/editSalesForecast";
    public static final String EDIT_SALES_FORECAST_CATEGORY = "Sales Forecast";

    


    public static final String CREATE_MRP_SOP = "Create Sales Operation Planning";
    public static final String CREATE_MRP_SOP_PATH = "/MrpSop/createMrpSop";
    public static final String CREATE_MRP_SOP_CATEGORY = "Sales Operation Planning";

    

    public static final String VIEW_MRP_SOP = "View Sales Operation Planning";
    public static final String VIEW_MRP_SOP_PATH = "/MrpSop/viewMrpSop";
    public static final String VIEW_MRP_SOP_CATEGORY = "Sales Operation Planning";
    
    public static final String EDIT_MRP_SOP = "Edit Sales Operation Planning";
    public static final String EDIT_MRP_SOP_PATH = "/MrpSop/editMrpSop";
    public static final String EDIT_MRP_SOP_CATEGORY = "Sales Operation Planning";
    
    public static final String CREATE_DAILY_MPS = "Create Daily MPS";
    public static final String CREATE_DAILY_MPS_PATH = "/MrpMps/createDailyMps";
    public static final String CREATE_DAILY_MPS_CATEGORY = "Master Production Schedule";
    
    public static final String EDIT_DAILY_MPS = "Edit Daily MPS";
    public static final String EDIT_DAILY_MPS_PATH = "/MrpMps/editDailyMps";
    public static final String EDIT_DAILY_MPS_CATEGORY = "Master Production Schedule";
    
    public static final String VIEW_DAILY_MPS = "View Daily MPS";
    public static final String VIEW_DAILY_MPS_PATH = "/MrpMps/viewDailyMps";
    public static final String VIEW_DAILY_MPS_CATEGORY = "Master Production Schedule";
    
    public static final String VIEW_WEEKLY_MPS = "View Weekly MPS";
    public static final String VIEW_WEEKLY_MPS_PATH = "/MrpMps/viewWeeklyMps";
    public static final String VIEW_WEEKLY_MPS_CATEGORY = "Master Production Schedule";
    
    
    public static final String CREATE_MRP_MRP = "Create MRP";
    public static final String CREATE_MRP_MRP_PATH = "/MrpMrp/createMrpMrp";
    public static final String CREATE_MRP_MRP_CATEGORY = "Material Requiements Planning";
    
    public static final String EDIT_MRP_MRP = "Edit MRP";
    public static final String EDIT_MRP_MRP_PATH = "/MrpMrp/editMrpMrp";
    public static final String EDIT_MRP_MRP_CATEGORY = "Material Requiements Planning";
    
    public static final String VIEW_MRP_MRP = "View MRP";
    public static final String VIEW_MRP_MRP_PATH = "/MrpMrp/viewMrpMrp";
    public static final String VIEW_MRP_MRP_CATEGORY = "Material Requiements Planning";
    
    public static final String SIMULATE_FOR_SO = "Simulation for Sales Order";
    public static final String SIMULATE_FOR_SO_PATH = "/ATP/simulateForSO";
    public static final String SIMULATE_FOR_SO_CATEGORY = "ATP";
    
    public static final String SIMULATE_FOR_RFQ = "Simulation for Sales Quotation";
    public static final String SIMULATE_FOR_RFQ_PATH = "/ATP/simulateForRFQ";
    public static final String SIMULATE_FOR_RFQ_CATEGORY = "ATP";
    
    public static final String VIEW_BACKORDER = "View Back Orders";
    public static final String VIEW_BACKORDER_PATH = "/ATP/viewBackOrder";
    public static final String VIEW_BACKORDER_CATEGORY = "ATP";
    
    //for supply chain
    public static final String VIEW_PRODUCT_INVENTORY = "View Product Inventory";
    public static final String VIEW_PRODUCT_INVENTORY_PATH = "/ProductInventory/viewProductInventoryRecord";
    public static final String VIEW_PRODUCT_INVENTORY_CATEGORY = "Logistics Control";
    public static final String VIEW_RAW_MATERIAL_INVENTORY = "View Raw Material Inventory";
    public static final String VIEW_RAW_MATERIAL_INVENTORY_PATH = "/RawMaterialInventory/viewRawMaterialInventoryRecord";
    public static final String VIEW_RAW_MATERIAL_INVENTORY_CATEGORY = "Logistics Control";
    public static final String VIEW_ORDER_LIST = "View Order List";
    public static final String VIEW_ORDER_LIST_PATH = "/Logistics/viewOrderList";
    public static final String VIEW_ORDER_LIST_CATEGORY = "Logistics Control";
    public static final String CREATE_RM_PURCHASE_ORDER = "Create Raw Material Purchase Order";
    public static final String CREATE_RM_PURCHASE_ORDER_PATH = "/RawMaterialPurchase/createPurchaseOrder";
    public static final String CREATE_RM_PURCHASE_ORDER_CATEGORY = "Raw Material Purchase";
    public static final String VIEW_RM_PURCHASE_ORDER = "View Raw Material Purchase Order";
    public static final String VIEW_RM_PURCHASE_ORDER_PATH = "/RawMaterialPurchase/viewPurchaseOrder";
    public static final String VIEW_RM_PURCHASE_ORDER_CATEGORY = "Raw Material Purchase";
    public static final String STORE_RM_SALES_ORDER = "Store Raw Material Sales Order";
    public static final String STORE_RM_SALES_ORDER_PATH = "/RawMaterialPurchase/storeSalesOrder";
    public static final String STORE_RM_SALES_ORDER_CATEGORY = "Raw Material Purchase";
    public static final String VIEW_RM_SALES_ORDER = "View Raw Material Sales Order";
    public static final String VIEW_RM_SALES_ORDER_PATH = "/RawMaterialPurchase/viewSalesOrder";
    public static final String VIEW_RM_SALES_ORDER_CATEGORY = "Raw Material Purchase";
    public static final String ADD_NEW_SUPPLIER = "Add New Supplier";
    public static final String ADD_NEW_SUPPLIER_PATH = "/SupplierManagement/addSupplier";
    public static final String ADD_NEW_SUPPLIER_CATEGORY = "Supplier Management";
    public static final String VIEW_SUPPLIER_LIST = "View Supplier List";
    public static final String VIEW_SUPPLIER_LIST_PATH = "/SupplierManagement/viewSupplierList";
    public static final String VIEW_SUPPLIER_LIST_CATEGORY = "Supplier Management";
    public static final String RATE_SUPPLIER = "Supplier Rating";
    public static final String RATE_SUPPLIER_PATH = "/SupplierManagement/rateSupplier";
    public static final String RATE_SUPPLIER_CATEGORY = "Supplier Management";
    public static final String CREATE_GOODS_RECEIPT = "Create Goods Receipt";
    public static final String CREATE_GOODS_RECEIPT_PATH = "/RawMaterialInventory/createGoodsReceipt";
    public static final String CREATE_GOODS_RECEIPT_CATEGORY = "Logistics Control";
    public static final String VIEW_SUPPLIER_RATING = "View Supplier Ranking";
    public static final String VIEW_SUPPLIER_RATING_PATH = "/SupplierManagement/viewSupplierRanking";
    public static final String VIEW_SUPPLIER_RATING_CATEGORY = "Supplier Management";
    public static final String CREATE_PURCHASE_PLAN = "Create Purchase Plan";
    public static final String CREATE_PURCHASE_PLAN_PATH = "/RawMaterialPurchase/createPurchasePlan";
    public static final String CREATE_PURCHASE_PLAN_CATEGORY = "Raw Material Purchase";
    public static final String VIEW_PURCHASE_PLAN = "View Purchase Plan";
    public static final String VIEW_PURCHASE_PLAN_PATH = "/RawMaterialPurchase/viewPurchasePlan";
    public static final String VIEW_PURCHASE_PLAN_CATEGORY = "Raw Material Purchase";
    
    
    // Supplier Rating Weightage
    public static final Long QUALITY_WEIGHTAGE = 5L;
    public static final Long PRICE_WEIGHTAGE = 5L;
    public static final Long LEADTIME_WEIGHTAGE = 5L;
    public static final Long SERVICE_WEIGHTAGE = 5L;
    
    
    // enum constants
    public enum PhoneType {
        BUSINESS_TEL,
        BUSINESS_HP,
        HOME_TEL,
        HOME_HP
    }
    public enum ProductType{
        BAR_A("Classic Nuts"),
        BAR_B("Classic Fruits"),
        BAR_C("Premium Chocolate Nuts"),
        BAR_D("Premium Redcurrant Fruits");
        
        private String text;
        
        ProductType(String text){
            this.text = text;
        }
        
        public String getText(){
            return this.text;
        }
        
        public static ProductType fromString(String text){
            if(text != null){
                for (ProductType p: ProductType.values()){
                    if (text.equalsIgnoreCase(p.text)){
                        return p;
                    }
                }              
            }
            return null;
        }
        
    }
    
    private Consts(){
        throw new AssertionError();
    }
}
